home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 8 / Mac Magazin and MacEasy Magazine CD - Issue 08.iso / Sharewarebibliothek / DFÜ / commsService 2.0.2 Final / Sample Scripts < prev   
Text File  |  1994-12-20  |  7KB  |  237 lines

  1. Example No. 1 - Use of a Logging File.
  2. ••••••••••••••••••••••••••••••••••••••
  3.  
  4. on DownLoadMail LogFileName
  5.   Global ActiveService 
  6.   --
  7.   -- Attach the logging file to the service and then
  8.   -- execute the service script that reads the mail and 
  9.   -- finally detach the logging file.
  10.   -- NB. 'LogFileName' is the full path name of the file to be used.
  11.   --   
  12.   set AttachLogFile of window ActiveService to LogFileName
  13.   put ReadMail() into status
  14.   send "DetachLogFile" to window ActiveService
  15.   --
  16.   -- If the reading of the mail went OK (the service handler 
  17.   -- returned ‘true’) then ask if its OK to log out otherwise
  18.   -- post an error and logout
  19.   --
  20.   beep
  21.   if not(status) then
  22.     answer "Error detected whilst reading mail" with "Continue”
  23.   end if
  24. end DownLoadMail
  25.  
  26.  
  27. o===================================================================o
  28.  
  29.  
  30. function ReadMail
  31.   Global ActiveService, FoundString
  32.   --
  33.   -- Start the process off by sending a carriage-return to bring up the
  34.   -- menu, and then select the appropriate option to download the mail
  35.   --
  36.   get SendToService(ActiveService, return, "")
  37.   if ExpectFromService(ActiveService, 20, true, true, "Some prompt") then
  38.      if FoundString = 1 then      
  39.         get SendToService(ActiveService, "Some Option" & return, "")
  40.         --
  41.         -- Keep reading service until “Terminating prompt” detected
  42.         --  
  43.         if ExpectFromService(ActiveService, 300, true, true, "Terminating prompt") then
  44.             if FoundString = 1 then return true
  45.         end if
  46.      end if
  47.   end if
  48.   return false
  49. end ReadMail
  50.  
  51.  
  52.  
  53. Example No. 2 - Direct Data Capture.
  54. ••••••••••••••••••••••••••••••••••••
  55.  
  56. on CaptureReport
  57.  
  58.   Global ActiveService, FoundString, CapturedData
  59.   --
  60.   -- Step through the various prompts looking for the required one
  61.   -- and then capture data until the terminating prompt is found
  62.   --
  63.   if ExpectFromService(ActiveService, 10, true, true, "Some prompt") then
  64.      if FoundString = 1 then
  65.         get SendToService(ActiveService, "Some command" & return, "") 
  66.         --
  67.         -- Found it so capture data now
  68.         --
  69.         put ReceiveFromService(ActiveService, 10, true, true, "Terminating prompt") ¬                          
  70.             into capturedData
  71.         --
  72.         -- If the string was found then quit the process and return  
  73.         -- indicate ‘success’ to the calling code
  74.         --
  75.         if FoundString = 1 then
  76.            get SendToService(ActiveService, "Quit" & return, "")
  77.            return true
  78.         end if
  79.      end if
  80.   end if 
  81.   return false
  82. end CaptureReport
  83.  
  84.  
  85.  
  86. Example No. 3 - Script Cancelling.
  87. ••••••••••••••••••••••••••••••••••••
  88.  
  89. on ExampleHandler
  90.   Global ScriptStatus, AllowCancel, CursorToUse
  91.           
  92.    --
  93.    -- Set the AYS globals for the following enviroment -
  94.    --
  95.    -- Display the special ‘cancel’ cursor whilst searching for strings
  96.    --     
  97.    put “cancel” into CursorToUse
  98.    --
  99.    -- Allow cancelling of the ‘search’ functions by the use of the
  100.    -- Command-period key combination but prevent this action also
  101.    -- cancelling the HyperTalk script that is running.
  102.    --
  103.    put true into AllowCancel
  104.    set the cantAbort of this stack to true
  105.    --
  106.    -- Now execute the handler in the desired environment
  107.    --
  108.    put SomeFuction() into reply
  109.    --
  110.    -- Reset the environment
  111.    --
  112.    set the cantAbort of this stack to false
  113.    put “busy”  into CursorToUse
  114.    put false into allowCancel
  115.    --
  116.    -- Determine status and react
  117.    --
  118.    -- If the handler did not complete successfully then
  119.    -- determine why it didn’t
  120.    --
  121.    if not(reply) then
  122.      beep
  123.      if ScriptStatus = "Cancel" then
  124.        answer “Cancelling Transfer"
  125.        get CancelFunction()
  126.      else
  127.        answer “Transfer Crashed"
  128.      end if
  129.    end if
  130. end ExampleHandler
  131.  
  132.  
  133. Example No. 4 - Character Pair Matching.
  134. ••••••••••••••••••••••••••••••••••••••••
  135.  
  136.  
  137. on TransferFile
  138.   Global ActiveService, FoundString, ControlData, DataFileName, CursorToUse
  139.   --
  140.   -- Construct and transmit some machine specific command that starts the
  141.   -- display of some file that we may capture to a logging file etc.
  142.   --
  143.   put "DISPLAY-FILE " & fld "AccountName" & space & fld "FileName" into Command
  144.   if not(SendToService(“TargetMachine”, Command & return, "")) then return false
  145.   --
  146.   -- Now enter a loop that searchs for either -
  147.   -- ‘###’ delimited strings that contain error messages - or
  148.   -- ‘@@@’ delimited strings that  contain status messages
  149.   --
  150.   put true into status
  151.   repeat
  152.     if ExpectFromService(TargetMachine, 30, true, true, "###Δ###", "@@@Δ@@@") then
  153.       if FoundString = 0 then
  154.         exit repeat
  155.       end if
  156.       --
  157.       -- Is it an error string, if so display it and exit the loop
  158.       --
  159.       if FoundString = 1 then
  160.         beep
  161.         put "status: " & ExtractMessage(controlData, "###") into fld "Status"
  162.         exit repeat
  163.       end if
  164.       --
  165.       -- Is it an status string, if so display it and then react 
  166.       -- according to its contents
  167.       --
  168.       if FoundString = 2 then
  169.         put ExtractMessage(controlData, "@@@") into temp
  170.         put "status: " & temp into fld "Status"
  171.         --
  172.         -- It is an initiate command, start logging the data
  173.         --
  174.         if temp contains "Transfer Initiated" then
  175.           set AttachLogFile of window "TargetMachine" to dataFileName
  176.           put “cancel” into CursorToUse
  177.         end if
  178.         --
  179.         -- If it is a cancel command, set the status flag and exit the loop
  180.         --
  181.         if temp contains "Cancelled" then
  182.           put false into status
  183.           send "DetachLogFile" to window "TargetMachine"
  184.              put “busy” into CursorToUse
  185.           exit repeat
  186.         end if
  187.         --
  188.         -- If it is a completion command, detach the logging file, exit the loop
  189.         --
  190.         if temp contains "Transfer Complete" then
  191.           send "DetachLogFile" to window "TargetMachine"
  192.              put “busy” into CursorToUse
  193.           exit repeat
  194.         end if
  195.       end if
  196.     else
  197.       put false into status
  198.       exit repeat
  199.     end if
  200.   end repeat
  201.   return status
  202. end TransferFile
  203.  
  204. o===================================================================o
  205.  
  206. function ExtractMessage Target, Text
  207.   put the number of chars in Text into xx
  208.   repeat
  209.     put offset(Text, Target) into posn
  210.     if posn = 0 then return(Target)
  211.     delete char posn to (posn+xx) of Target
  212.   end repeat
  213. end ExtractMessage
  214.  
  215.  
  216. Example No. 5 - Edit Service Selection.
  217. •••••••••••••••••••••••••••••••••••••••
  218.  
  219. on EditServiceText
  220.   Global EditorNames, ActiveService
  221.   --
  222.   -- Select the contents of the terminal emulation screen and then 
  223.   -- put the contents into a variable
  224.   --
  225.   send SelectAll to window ActiveService
  226.   put the TerminalSelection of window ActiveService into Text
  227.   --
  228.   -- Create a text edit window called ‘Selected Text’ leaving the window
  229.   -- hidden. Then load the retrieved data and finally show the window
  230.   --
  231.   OpenEditor "Selected Text", false 
  232.   if the result = false then exit EditServiceText
  233.  
  234.   set Text of window "Selected Text" to text
  235.   set visible of window "Selected Text" to true  
  236. end EditServiceText
  237.